mscJNeuralNet.connectors
Class RandomSymmetryBreakingNetConnector

java.lang.Object
  extended bymscJNeuralNet.connectors.RandomSymmetryBreakingNetConnector
All Implemented Interfaces:
INetConnector

public class RandomSymmetryBreakingNetConnector
extends java.lang.Object
implements INetConnector

Kantengewichtsinitialisierung mit Zufallswerten entsprechend den eingehenden Verbindungen eines Neurons.

Aus Prof. Dr. H. Westenberger, Skript Neuronale Netze 99V011:

Kapitel: 2.5.1 Symmetry breaking


"Für Feedforward-Netze, die ebenenweise aufgebaut sind, sollten die Gewichte einer Verbindungsschicht beim Start nicht sämtlich gleich initialisiert werden. In einem ff1-Netz mit einem Hidden-Layer würden nämlich aus Symmetriegründen die Kantengewichte, die von einem Input Knoten ausgehen ebenso wie alle Kanten zu einem Outputknoten gleich bleiben Lösung: Bei der Initialiserung der Gewichte verwende man Zufallszahlen. Optimal sind die Kantengewichte, wenn die Betragssumme der Kantengewichte, die zu einem Neuron führen, betragsmäßig klein bleiben, allenfalls in der Größenordnung von 1 liegen. Damit wird der Netzinput in der Nähe von 0 liegen, und die sigmoide Transferfunktion relativ große Ableitungen erreichen. In dieser Situation kann sich das Netz schnellstens anpassen. Aus diesem Grund empfiehlt sich, die Zufallszahlen für die Kantenvorbelegung zu einem Neuron mit N Vorgängerneuronen aus dem Intervall [-1/N; 1/N], zu wählen."

Im folgenden Beispiel wird der RandomSymmetryBreakingNetConnector benutzt, um die Kantengewichte mit Zufallswerten entsprechend zu initialisieren:

 int [] lLayerSizes = {2, 1}; 
 Net myNet = new Net();
 INetConnector lRndSymBreakCon = new RandomSymmetryBreakingNetConnector();
 lRndSymBreakCon.connectNet(myNet, null); 
 

Created on 02.06.2004

Version:
02.06.2004
Author:
M. Serhat Cinar
See Also:
INetConnector

Constructor Summary
RandomSymmetryBreakingNetConnector()
           
 
Method Summary
 void connectNet(Net pNet, double[] pParameters)
          Gegebene Parameter werden nicht berücksichtigt.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RandomSymmetryBreakingNetConnector

public RandomSymmetryBreakingNetConnector()
Method Detail

connectNet

public void connectNet(Net pNet,
                       double[] pParameters)
Gegebene Parameter werden nicht berücksichtigt. Daher sollte der Parameterarray als null übergeben werden.
Nach der Initialisierung werden die Observer des Netzes benachrichtigt.

Specified by:
connectNet in interface INetConnector
Parameters:
pNet - Das Netz, dessen Kantengewichte initialisiert werden sollen.
pParameters - Je nach Initialisierungsalgorithmus können hier verschiedene Parameter übermittelt werden.
See Also:
INetConnector.connectNet(Net, double[]), ObserverManager.notifyObservers(Observable)

toString

public java.lang.String toString()